const jwt = require('jsonwebtoken');

const JWT_SECRET = process.env.JWT_SECRET || 'linux-panel-secret-key';

/**
 * 验证JWT令牌中间件
 */
exports.verifyToken = (req, res, next) => {
  // 从请求头获取令牌
  const token = req.headers.authorization?.split(' ')[1];

  if (!token) {
    return res.status(401).json({ error: '未提供访问令牌' });
  }

  try {
    // 验证令牌
    const decoded = jwt.verify(token, JWT_SECRET);
    req.user = decoded;
    next();
  } catch (error) {
    return res.status(401).json({ error: '无效的令牌' });
  }
};

/**
 * 验证管理员权限中间件
 */
exports.verifyAdmin = (req, res, next) => {
  if (!req.user || req.user.role !== 'admin') {
    return res.status(403).json({ error: '需要管理员权限' });
  }
  next();
};

/**
 * 生成JWT令牌
 */
exports.generateToken = (user) => {
  return jwt.sign(
    {
      id: user._id,
      username: user.username,
      role: user.role
    },
    JWT_SECRET,
    { expiresIn: '24h' }
  );
}; 